/**
 * @file global_vars.h
 * @brief 全局变量声明文件
 * @author 系统集成
 * @date 2024-07-07
 */

#ifndef GLOBAL_VARS_H
#define GLOBAL_VARS_H

#include <stdint.h>
#include "../ESWIN_SDK/drivers/include/pins_driver.h"
#include "../ESWIN_SDK/drivers/include/pwm_driver.h"
#include "../ESWIN_SDK/drivers/include/uart_driver.h"
#include "../ESWIN_SDK/drivers/include/supertmr_common.h"

/**
 * 小车状态枚举
 */
typedef enum {
    CAR_STATE_IDLE,       // 空闲状态，等待命令
    CAR_STATE_MOVING,     // 正在移动中
    CAR_STATE_WAITING,    // 等待用户确认位置
    CAR_STATE_ADJUSTING,  // 正在进行姿态调整
    CAR_STATE_BUSY        // 正在处理视觉数据，不接受新数据
} CarState;

// 全局变量声明
extern CarState g_carState;      // 小车当前状态
extern int g_currentPosition;    // 当前位置
extern int g_targetPosition;     // 目标位置
extern int g_nextPosition;       // 下一个位置
extern uint32_t g_systemTimeMs;  // 系统时间计数器(毫秒)

/**
 * SUPERTMR状态变量
 */
extern supertmr_state_t g_stSupertmrState_1;
extern supertmr_state_t g_stSupertmrState_2;

// 电机控制函数声明
void DC_MOTOR_InitPIController(void);
void DC_MOTOR_ProcessEncoderData(void);
void DC_MOTOR_UpdatePIController(void);

// 延迟函数声明
void DELAY_MS(uint32_t ms);

#endif /* GLOBAL_VARS_H */ 